Skip to content

feat(changelog): refresh CLI + web changelogs, Mintlify-style timeline#142

Merged
omsherikar merged 2 commits into
mainfrom
feat/changelog-refresh
May 18, 2026
Merged

feat(changelog): refresh CLI + web changelogs, Mintlify-style timeline#142
omsherikar merged 2 commits into
mainfrom
feat/changelog-refresh

Conversation

@omsherikar
Copy link
Copy Markdown
Collaborator

@omsherikar omsherikar commented May 18, 2026

Refreshes both changelog streams and redesigns the changelog page.

CLI Package changelog (src/data/changelog.ts)

Added the v2.0 releases — 0.2.2, 0.2.1, 0.2.0 — sourced from the repo CHANGELOG. 0.2.0 carries a new pivot tag: it explains the reset from the legacy 1.x Python tool to the deterministic v2.0 TypeScript rebuild, so the 0.2.0-after-1.0.15 ordering reads sensibly.

Web App changelog (src/data/webChangelog.ts)

Added web-1.2.0 / web-1.3.0 / web-1.4.0 from the commit history since web-1.1.0 — status page + changelog tabs (PR #130), blog launch (#131-#133), marketing redesign + research (#137-#139). Descriptions are grounded in the actual commit messages.

Page redesign (src/components/Changelog.tsx)

Replaced the bordered cards with a Mintlify-style vertical timeline — a sticky version label on the left rail, a node on the connecting line, release content to the right. The pivot entry gets a rose-tinted node + line so it stands out where the v2.0 stream meets the legacy 1.x entries. New pivot tag style added.

Verified: tsc, eslint, prettier --check all clean.

Not visually verified — the site was not run locally; worth an npm start pass on the timeline (especially the sticky top-28 offset under the navbar).

Summary by CodeRabbit

  • New Features

    • Changelog entries now display in a timeline layout with visual highlighting for pivotal releases
    • Added three new app changelog entries (versions 0.2.2, 0.2.1, 0.2.0)
    • Added three new web changelog entries (web-1.4.0, web-1.3.0, web-1.2.0)
  • Style

    • Testimonials section updated to dark theme with adjusted colors and contrast

Review Change Stack

The Testimonials section was light (#f3f3f2) sitting between black
sections, with four from-black edge gradients darkening its edges — it
looked off.

- Convert to a charcoal dark section (#161618): recolor heading/subtext
  to light, flip the grid lines + vignettes to a light tint so they stay
  visible, update the marquee fade masks to the new bg. White cards kept.
- Replace the four hard from-black edge gradients with two soft top/
  bottom fades at z-[5] (under the content) that blend the section into
  the neighbouring black sections without darkening the heading or cards.
- CLI changelog: add the v2.0 releases (0.2.0 / 0.2.1 / 0.2.2). 0.2.0
  is marked with a new `pivot` tag — it explains the reset from the
  legacy 1.x Python tool to the deterministic v2.0 rebuild.
- Web changelog: add web-1.2.0 / 1.3.0 / 1.4.0 from the commit history
  since web-1.1.0 (status page + changelog tabs, blog launch, marketing
  redesign + research).
- Redesign the changelog page as a vertical timeline (Mintlify-style):
  sticky version label on the left rail, a node on the connecting line,
  release content to the right. The pivot entry gets a rose-tinted node.
Copilot AI review requested due to automatic review settings May 18, 2026 11:11
@vercel
Copy link
Copy Markdown

vercel Bot commented May 18, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
refactron Ready Ready Preview, Comment May 18, 2026 11:12am

@github-actions
Copy link
Copy Markdown

⚠️ Deprecation Warning: The deny-licenses option is deprecated for possible removal in the next major release. For more information, see issue 997.

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 18, 2026

📝 Walkthrough

Walkthrough

The PR redesigns the Changelog component to display entries as a vertical timeline with left-rail labels and connecting lines. Changelog data is extended with a new pivot tag type and six new release entries across main and web changelogs. Additionally, the TestimonialsSection is restyled to a dark theme.

Changes

Changelog Timeline Redesign

Layer / File(s) Summary
Changelog data schema and entries
src/data/changelog.ts, src/data/webChangelog.ts
ChangelogEntry tag union extends to include 'pivot'. Three new application releases (0.2.2 with new tag, 0.2.1 with fix tag, 0.2.0 with pivot tag) and three new web releases (web-1.4.0, web-1.3.0, web-1.2.0) are added with structured sections and item descriptions.
TimelineEntry component and timeline layout
src/components/Changelog.tsx
TimelineEntry component replaces EntryCard, rendering entries as a vertical timeline row with a sticky left rail (version, date, tag), connecting line, and content area. Pivot-tagged entries receive special node styling. Collapsible sections animate via motion.div; standard sections display with labeled dots. Container spacing and footer positioning are adjusted.

Testimonials Dark Theme

Layer / File(s) Summary
Dark theme restyling
src/components/TestimonialsSection.tsx
Marquee edge gradient overlays, section container background, editorial grid/vignette backdrops, soft edge fade overlays, and header text colors are updated from light to dark theme with z-index adjustments for proper blending.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • Refactron-ai/Refactron_Website#130: Both PRs integrate the changelog feature at the component level—this PR introduces the TimelineEntry rendering and new release data, while that PR adds Web App/CLI tab switching logic using the webChangelog dataset.

Suggested labels

type:feature, type:refactor

Poem

🐰 A timeline's born from entries new,
With pivot tags in pivot-blue,
Testimonials dress in dark attire,
While releases climb ever higher!
The Web and App both join the show,
Six shiny entries in a row. ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main changes: refreshing both CLI and web changelogs with a new Mintlify-style timeline design, which is the primary objective of the PR.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/changelog-refresh

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

👋 Thanks for opening this pull request! A maintainer will review it soon. Please make sure all CI checks pass.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/components/Changelog.tsx`:
- Around line 97-109: The collapse toggle button doesn't expose ARIA
state/association; update the button rendered in Changelog (the one using
toggle(si), ChevronRight, isExpanded, and section.label) to include
aria-expanded={isExpanded} and aria-controls pointing to the collapsible panel's
id, and ensure the corresponding collapsible panel element (the section content
rendered elsewhere for this section) has that same unique id and an appropriate
role/aria-labelledby or role="region" for screen readers to associate the
control with its panel; keep the existing toggle(si) behavior and generated id
strategy consistent (e.g., derive id from section.id/si) so both button and
panel reference the same identifier.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 57ad283a-3fa0-4978-857f-930754701e30

📥 Commits

Reviewing files that changed from the base of the PR and between 9aa7877 and aad0de2.

📒 Files selected for processing (4)
  • src/components/Changelog.tsx
  • src/components/TestimonialsSection.tsx
  • src/data/changelog.ts
  • src/data/webChangelog.ts

Comment on lines +97 to +109
<button
onClick={() => toggle(si)}
className="group mb-0 flex items-center gap-1.5 text-xs font-medium text-neutral-500 transition-colors hover:text-neutral-300"
>
<ChevronRight
className={`h-3.5 w-3.5 transition-transform duration-200 ${isExpanded ? 'rotate-90' : ''}`}
/>
<span>
{isExpanded
? section.label
: `${section.label} / Housekeeping...`}
</span>
</button>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add ARIA state/association to collapsible sections.

The toggle button should expose expansion state and control target (aria-expanded, aria-controls) so screen readers can interpret the section behavior.

Suggested patch
 {entry.sections.map((section, si) => {
   const isCollapsible = section.collapsible;
   const isExpanded = expandedSections[si] ?? false;
+  const panelId = `section-panel-${entry.version}-${si}`;
+  const buttonId = `section-button-${entry.version}-${si}`;

   return (
     <div key={si}>
       {isCollapsible ? (
         /* Collapsible section */
         <div>
           <button
+            id={buttonId}
+            aria-expanded={isExpanded}
+            aria-controls={panelId}
             onClick={() => toggle(si)}
             className="group mb-0 flex items-center gap-1.5 text-xs font-medium text-neutral-500 transition-colors hover:text-neutral-300"
           >
...
           {isExpanded && (
             <motion.div
+              id={panelId}
+              role="region"
+              aria-labelledby={buttonId}
               initial={{ opacity: 0, height: 0 }}
               animate={{ opacity: 1, height: 'auto' }}
               exit={{ opacity: 0, height: 0 }}

Also applies to: 111-131

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/Changelog.tsx` around lines 97 - 109, The collapse toggle
button doesn't expose ARIA state/association; update the button rendered in
Changelog (the one using toggle(si), ChevronRight, isExpanded, and
section.label) to include aria-expanded={isExpanded} and aria-controls pointing
to the collapsible panel's id, and ensure the corresponding collapsible panel
element (the section content rendered elsewhere for this section) has that same
unique id and an appropriate role/aria-labelledby or role="region" for screen
readers to associate the control with its panel; keep the existing toggle(si)
behavior and generated id strategy consistent (e.g., derive id from
section.id/si) so both button and panel reference the same identifier.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refreshes the public changelog data and redesigns the changelog page into a vertical timeline, while also including a landing-page testimonials visual theme adjustment.

Changes:

  • Adds newer CLI and Web App changelog entries.
  • Adds a pivot changelog tag for the CLI versioning reset.
  • Reworks changelog entries from cards into a timeline layout.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
src/data/webChangelog.ts Adds Web App changelog entries for recent releases.
src/data/changelog.ts Adds CLI release entries and extends changelog tags with pivot.
src/components/Changelog.tsx Replaces changelog cards with timeline-style entries and pivot styling.
src/components/TestimonialsSection.tsx Changes testimonials section styling from light to dark.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/data/changelog.ts
{
label: 'Deterministic engine',
description:
'Refactron 2.0 is rebuilt as a 100% deterministic AST engine — no LLM touches your code. It supersedes the original Python-implemented 1.x line.',
Comment on lines 250 to +252
<section
id="testimonials"
className="relative w-full overflow-hidden bg-[#f3f3f2] py-24 lg:py-28 text-neutral-900 antialiased font-space"
className="relative w-full overflow-hidden bg-[#161618] py-24 lg:py-28 text-neutral-200 antialiased font-space"
Comment on lines 248 to +252
<motion.div
initial={{ opacity: 0, y: 12 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.4, delay: 0.1 }}
className="flex gap-1 mb-10 p-1 rounded-xl bg-white/[0.04] border border-white/[0.08] w-fit"
className="flex gap-1 mb-12 p-1 rounded-xl bg-white/[0.04] border border-white/[0.08] w-fit"
Comment on lines +97 to +99
<button
onClick={() => toggle(si)}
className="group mb-0 flex items-center gap-1.5 text-xs font-medium text-neutral-500 transition-colors hover:text-neutral-300"
@omsherikar omsherikar merged commit 8608772 into main May 18, 2026
15 of 16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:feature New feature type:refactor Code refactoring

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants